#pragma once

namespace ja2
{
	//! Base class for game screen.
	class GameScreen : boost::noncopyable
	{
		// Attributes
	private:

		// Operations
	public:
		//! Initialize screen.
		void init();
		//! Handle screen.
		void handle();
		//! Shutdown screen.
		void shutdown();
	private:
		//! Implementation.
		virtual void do_init() = 0;
		//! Implementation.
		virtual void do_handle() = 0;
		//! Implementation.
		virtual void do_shutdown() = 0;

		// Construction/Destruction
	public:
		GameScreen();
		virtual ~GameScreen() = 0;
	};
} /*ja2*/
